<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .container{
            width: 500px;
            height: 500px;
            border: 1px solid;
            position: relative;
            margin: 0 auto;
        }
        .mask{
            width: 150px;
            height: 150px;
            background-color: yellow;
            opacity: .5;
            display: none;
            position: absolute;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="mask"></div>
    </div>
    <script>
        // 1.鼠标移入容器额时候，方块显示出来 鼠标移除的时候 方块隐藏起来 
        // over out   、  enter  leave
        var containerEle = document.querySelector(".container");
        var maskEle = document.querySelector(".mask");
        containerEle.onmouseenter = function(){
            // 让遮罩层显示出来
            maskEle.style.display = "block";
        }

        containerEle.onmouseleave = function(){
            // 让遮罩层隐藏起来
            maskEle.style.display = "none";
        }


        // 2.在容器里移动的时候 遮罩层需要跟随鼠标移动而移动 ；

        containerEle.onmousemove = function(e){
            // 获取鼠标所在的位置 ； 获取相对浏览器的位置 ；  
            var x = e.clientX;
            var y = e.clientY;
            // 获取遮罩层左上角相对 container的 x 和 y的坐标
            var posX = x - this.offsetLeft - maskEle.offsetWidth/2;
            var posY = y - this.offsetTop - maskEle.offsetHeight/2;
            // 3.x 轴的 极限距离 
            // 距离左边的最大 距离
            if(posX<=0){
                posX = 0;
            }
            // 右边的极限距离
            if(posX>=containerEle.clientWidth-maskEle.offsetWidth){
                posX = containerEle.clientWidth-maskEle.offsetWidth;
            }

            // y轴上的极限距离

            if(posY<=0){
                posY = 0;
            }

            if(posY>=containerEle.clientHeight-maskEle.offsetHeight){
                posY = containerEle.clientHeight-maskEle.offsetHeight;
            }
            maskEle.style.left = posX + "px"
            maskEle.style.top = posY + "px"; 
        }

    </script>
</body>
</html>